home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / gfx / vtdevel3.lha / Source / CopperPicture.s < prev    next >
Text File  |  1993-12-18  |  40KB  |  2,026 lines

  1.  
  2. rout            ;when this is off, the routine-file will be
  3.             ;assembled, on=testing
  4.             
  5. ;debug            ;when this is on, colors in the background will
  6.             ;show how much time the routine needs.
  7.  
  8. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  9.  
  10. routinemode    equ    1    ;the routinemode !
  11.  
  12.  
  13. ; the first part of the source handles the things that are necessary to
  14. ; show the picture/copper and playing of the routine.
  15. ; the part between the "***" lines is the routine-source.
  16. ; at the bottom of the file, there are the necessary incbin-files who
  17. ; are needed to test the routine.
  18. ; these are saved with "save effect" in videotracker. they are raw
  19. ; data files which can be fonts,pictures,landscapes,vectorobjects
  20. ; etcetra.
  21. ; the incbin-files are put in the "variables" table, in the routine-
  22. ; player-handler
  23. ; the place where it's done can be found by searching for "!!!"
  24.  
  25.  
  26.     opt    a+    ;devpac 3 optimize
  27.     opt    o+
  28.  
  29.     ifd    rout
  30.     ;videotracker routine-test
  31.  
  32.     incdir    "videotracker:include/"
  33.     include    "exec/types.i"
  34.     include    "graphics/gfxbase.i"
  35.     include    "lvo/graphics_lib.i"
  36.     incdir    'videotracker:effect/'
  37.  
  38. vew_wid    equ    44
  39. vew_hgt    equ    290
  40. win_hgt    equ    117
  41. win_str    equ    $1a
  42.  
  43.     SECTION    1,CODE_C
  44. tus
  45.     lea    var,a0
  46.     move.l    #rotsrc,curpic1        ;picture !!!
  47.     move.l    #rotset,var_cols1(a0)    ;colorset !!!
  48.  
  49.  
  50.     move.l    ($4).w,a6
  51.     sub.l    a1,a1
  52.     jsr    -$126(a6)        ;findtask
  53.     move.l    d0,curtsk
  54.     move.l    d0,a0
  55.     move.l    $b8(a0),tskpri
  56.  
  57.     lea    dosnam,a1        ;doslib openen
  58.     moveq.l    #0,d0
  59.     move.l    (4).w,a6
  60.     jsr    -408(a6)        ;openlib
  61.     move.l    d0,doslib
  62.  
  63.     bsr.s    label5            ;videotracker opstarten
  64.     
  65.     move.l    curtsk,a0
  66.     move.l    tskpri,$b8(a0)
  67.     move.l    ($4).w,a6
  68.     jsr    -$84(a6)        ;forbid
  69.  
  70.     move.l    doslib,a1
  71.     move.l    (4).w,a6
  72.     jsr    -414(a6)        ;closelib
  73.  
  74.     moveq.l    #0,d0
  75.     rts
  76.     
  77. label5
  78.     move.l    (4).w,a6        ;workbench gedoe
  79.  
  80.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  81.  
  82.     ifd    ntsctest
  83.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  84.     endc
  85.  
  86.     cmp.b    #50,ntscmode        ;ntsc ?
  87.     beq.s    str.ntsc
  88.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  89. str.ntsc
  90.  
  91.     lea    cprjmp,a2        ;copjmp zetten !
  92.     move.l    #cprbck-8,d0
  93.     move.w    d0,6(a2)
  94.     swap    d0
  95.     move.w    d0,2(a2)
  96.  
  97.     lea    cprbck-8,a2        ;copstr zetten !
  98.     move.l    #cpr,d0
  99.     move.w    d0,6(a2)
  100.     swap    d0
  101.     move.w    d0,2(a2)
  102.  
  103.     bsr    cprsprrem        ;sprites legen
  104.  
  105.     lea    gfxnam,a1        ;graphics lib openen
  106.     move.l    (4).w,a6
  107.     jsr    -408(a6)        ;openlib
  108.     move.l    d0,a6
  109.     move.l    d0,gfxlib
  110.     move.l    38(a6),oldcprlist
  111.  
  112.     bset    #1,$bfe001
  113.     bsr    copbuf            ;copper vullen
  114.  
  115.     bsr    sysoff
  116.  
  117. gadrun
  118.     btst    #6,($bfe001).l
  119.     bne    gadrun
  120.  
  121. scrend
  122. scrend.play
  123.     bsr    syson
  124.  
  125.     move.l    gfxlib,a1
  126.     move.l    (4).w,a6
  127.     jsr    -414(a6)        ;closelib
  128.  
  129. scrend.qb
  130.     moveq.l    #0,d0    
  131.     rts
  132.     
  133.     ;vertical blank interrupt, no blits.
  134.     ;handles counters,interlace,sprite
  135.     ;level 3
  136.  
  137. intvb
  138.     bra.s    intvb.cnt
  139.     dc.l    'VIDU'
  140.     dc.l    'LOOP'
  141. intvb.cnt
  142.     movem.l    d0-d7/a0-a6,-(sp)
  143.     lea    ($dff000).l,a6
  144.  
  145.     move.w    $01e(a6),d0
  146.     btst    #5,d0            ;vblank ?
  147.     bne.s    intvb.vb
  148.  
  149.     bra.s    intcop.end
  150.  
  151. intvb.vb
  152.     bsr    grap
  153.     bsr    palctr            ;palette zetten
  154.     bsr.s    copbuf            ;copper vullen
  155.     
  156. intvb.end
  157.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  158.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  159.     rte
  160.  
  161. intcop.end
  162.     movem.l    (sp)+,d0-d7/a0-a6
  163.     move.l    intvbold,-(sp)
  164.     rts
  165.  
  166.     ;transmission buffer empty routine, BLIT !
  167.     ;handles routines,animations
  168.     
  169. inttbe                    ;tbe interrupt
  170.     movem.l    d0-d7/a0-a6,-(sp)
  171.     lea    ($dff000).l,a6
  172.  
  173.     move.w    $01e(a6),d0
  174.     btst    #0,d0            ;no tbe ?
  175.     beq.s    intdskblk
  176.  
  177.  
  178.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  179.     beq.s    inttbe.cop
  180.     btst    #2,($dff016).l
  181.     beq.s    inttbe.cop
  182.  
  183.     ifd    debug
  184.     move.w    #$700,$dff180
  185.     endc
  186.     
  187.     bsr    rotply            ;routineplayer BLIT !
  188.     bsr.s    copbuf            ;copper vullen
  189.  
  190.     ifd    debug
  191.     move.w    #$070,$dff180
  192.     endc
  193.     
  194. inttbe.cop
  195.  
  196. inttbe.end
  197.     move.w    #$0001,$09c(a6)
  198.     movem.l    (sp)+,d0-d7/a0-a6
  199.     rte
  200.  
  201. intdskblk
  202.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  203.     movem.l    (sp)+,d0-d7/a0-a6
  204.     move.l    inttbeold,-(sp)
  205.     rts
  206.  
  207.  
  208.     ;moves the copperbuffer to the copperlist
  209.     ;sort of double buffering
  210.     
  211. copbuf
  212.     movem.l    d0-d7/a0-a6,-(sp)
  213.  
  214.     lea    ($dff000).l,a6
  215.  
  216. copbuf.novb                ;copperchange overslaan
  217.     moveq.l    #0,d0
  218.     move.b    $005(a6),d0
  219.     lsl.w    #8,d0
  220.     moveq.l    #0,d1
  221.     move.b    $006(a6),d1
  222.     add.w    d1,d0
  223.  
  224.     cmp.w    #$4,d0
  225.     blt    copbuf.novb
  226.  
  227.     cmp.b    #50,ntscmode
  228.     beq.s    copbuf.pal
  229.     cmp.w    #$133-56-8,d0        ;ntsc grens
  230.     bge    copbuf.novb
  231.     bra.s    copbuf.cont
  232. copbuf.pal
  233.     cmp.w    #$133-8,d0        ;pal grens
  234.     bge    copbuf.novb
  235. copbuf.cont
  236.  
  237.     lea    gra.s,a0        ;buffer copieren
  238.     lea    cprbuf,a1
  239.  
  240.     move.w    00*4+2(a0),00*4+2(a1)
  241.     move.w    01*4+2(a0),01*4+2(a1)
  242.     move.w    02*4+2(a0),02*4+2(a1)
  243.     move.w    03*4+2(a0),03*4+2(a1)
  244.     move.w    04*4+2(a0),04*4+2(a1)
  245.     move.w    05*4+2(a0),05*4+2(a1)
  246.     move.w    06*4+2(a0),06*4+2(a1)
  247.     move.w    07*4+2(a0),07*4+2(a1)
  248.     move.w    08*4+2(a0),08*4+2(a1)
  249.     move.w    09*4+2(a0),09*4+2(a1)
  250.  
  251.     move.w    10*4+2(a0),10*4+2(a1)
  252.     move.w    11*4+2(a0),11*4+2(a1)
  253.     move.w    12*4+2(a0),12*4+2(a1)
  254.     move.w    13*4+2(a0),13*4+2(a1)
  255.     move.w    14*4+2(a0),14*4+2(a1)
  256.     move.w    15*4+2(a0),15*4+2(a1)
  257.     move.w    16*4+2(a0),16*4+2(a1)
  258.     move.w    17*4+2(a0),17*4+2(a1)
  259.     move.w    18*4+2(a0),18*4+2(a1)
  260.     move.w    19*4+2(a0),19*4+2(a1)
  261.  
  262.     move.w    20*4+2(a0),20*4+2(a1)
  263.     move.w    21*4+2(a0),21*4+2(a1)
  264.     move.w    22*4+2(a0),22*4+2(a1)
  265.     move.w    23*4+2(a0),23*4+2(a1)
  266.     move.w    24*4+2(a0),24*4+2(a1)
  267.     move.w    25*4+2(a0),25*4+2(a1)
  268.     move.w    26*4+2(a0),26*4+2(a1)
  269.     move.w    27*4+2(a0),27*4+2(a1)
  270.     move.w    28*4+2(a0),28*4+2(a1)
  271.     move.w    29*4+2(a0),29*4+2(a1)
  272.  
  273.     move.w    30*4+2(a0),30*4+2(a1)
  274.     move.w    31*4+2(a0),31*4+2(a1)
  275.     move.w    32*4+2(a0),32*4+2(a1)
  276.     move.w    33*4+2(a0),33*4+2(a1)
  277.     move.w    34*4+2(a0),34*4+2(a1)
  278.     move.w    35*4+2(a0),35*4+2(a1)
  279.     move.w    36*4+2(a0),36*4+2(a1)
  280.     move.w    37*4+2(a0),37*4+2(a1)
  281.     move.w    38*4+2(a0),38*4+2(a1)
  282.     move.w    39*4+2(a0),39*4+2(a1)
  283.  
  284.     move.w    40*4+2(a0),40*4+2(a1)
  285.     move.w    41*4+2(a0),41*4+2(a1)
  286.     move.w    42*4+2(a0),42*4+2(a1)
  287.     move.w    43*4+2(a0),43*4+2(a1)
  288.     move.w    44*4+2(a0),44*4+2(a1)
  289.     move.w    45*4+2(a0),45*4+2(a1)
  290.     move.w    46*4+2(a0),46*4+2(a1)
  291.     move.w    47*4+2(a0),47*4+2(a1)
  292.     move.w    48*4+2(a0),48*4+2(a1)
  293.     move.w    49*4+2(a0),49*4+2(a1)
  294.  
  295.     move.w    50*4+2(a0),50*4+2(a1)
  296.     move.w    51*4+2(a0),51*4+2(a1)
  297.     move.w    52*4+2(a0),52*4+2(a1)
  298.     move.w    53*4+2(a0),53*4+2(a1)
  299.     move.w    54*4+2(a0),54*4+2(a1)
  300.  
  301. copbuf.end
  302.     movem.l    (sp)+,d0-d7/a0-a6
  303.     rts
  304.  
  305.     ;goes back to the workbench
  306.     
  307. syson
  308.     movem.l    d0-d7/a0-a6,-(sp)
  309.  
  310.     move.w    #$0001,$dff09a        ;tbeint uit
  311.     move.l    intvbold,($6c).w
  312.     move.l    inttbeold,($64).w
  313.  
  314.     move.l    4,a6
  315.     jsr    -138(a6)        ;permit
  316.  
  317.     move.l    gfxlib,a6
  318.     jsr    -462(a6)        ;disownblitter
  319.  
  320.     move.l    wbview,a1
  321.     move.l    gfxlib,a6
  322.     jsr    _LVOLoadView(a6)     ; Fix view
  323.     jsr    _LVOWaitTOF(a6)
  324.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  325.  
  326. syson.ras
  327.     cmp.b    #$c0,$dff006        ;prevent copperjump
  328.     bne    syson.ras
  329.  
  330.     move.l    gfxlib,a6
  331.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  332.  
  333.     movem.l    (sp)+,d0-d7/a0-a6
  334.     rts
  335.     
  336.     ;goes back to the gadgetscreen
  337.     
  338. sysoff
  339.     movem.l    d0-d7/a0-a6,-(sp)
  340.      
  341.     move.l    gfxlib,a6
  342.     move.l    gb_ActiView(a6),wbview    ;current view
  343.     sub.l    a1,a1            ; clear a1
  344.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  345.     jsr    _LVOWaitTOF(a6)     ; Wait once
  346.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  347.  
  348.     move.l    gfxlib,a6
  349.     jsr    -456(a6)        ;ownblitter
  350.  
  351.     move.l    4,a6
  352.     jsr    -132(a6)        ;forbid
  353.         
  354.     move.l    ($6c).w,intvbold
  355.     move.l    #intvb,($6c).w
  356.     move.l    ($64).w,inttbeold
  357.     move.l    #inttbe,($64).w
  358.     move.w    #$8001,$dff09a        ;tbeint aan
  359.     bsr    gracpr            ;reset copper
  360.     bsr    copbuf            ;copy copper
  361.     move.l    #cpr,$dff080
  362.  
  363.     movem.l    (sp)+,d0-d7/a0-a6
  364.     rts
  365.     
  366. cprsprrem
  367.     movem.l    d0-d7/a0-a6,-(sp)
  368.     lea    cprspr,a0
  369.     move.l    #sprdat,d0
  370.     move.w    #7,d1
  371. cprsprrem.a
  372.     move.w    d0,3*2(a0)
  373.     swap    d0
  374.     move.w    d0,1*2(a0)
  375.     swap    d0
  376.     add.l    #8,a0
  377.     dbra    d1,cprsprrem.a
  378.     movem.l    (sp)+,d0-d7/a0-a6
  379.     rts
  380.  
  381. varset                    ;variablen neerzetten
  382.     movem.l    d0-d7/a0-a6,-(sp)
  383.     move.l    #var,a0
  384.  
  385.     move.l    #cprbck,var_cprbck(a0)
  386.     move.l    gfxlib,var__GfxBase(a0)
  387.     move.b    ntscmode,var_ntsc(a0)
  388.  
  389.     move.l    curpic1,var_pic1(a0)    ;variabel
  390.     move.l    curpic2,var_pic2(a0)    ;variabel
  391.     move.w    anispd1,var_anispd1(a0)
  392.     move.w    anitel1,var_anitel1(a0)
  393.     movem.l    (sp)+,d0-d7/a0-a6
  394.     rts
  395.     
  396.     ;this routine handles all videotracker-routines
  397.  
  398. rotply    
  399.     movem.l    d0-d7/a0-a6,-(sp)
  400.  
  401.     moveq.l    #0,d0
  402.  
  403.     lea    currot1,a2        ;routine 1
  404.     move.w    rotinf1,d0        ;routine info
  405.     bsr.s    rotplyr
  406.  
  407. rotply.end
  408.     movem.l    (sp)+,d0-d7/a0-a6
  409.     rts
  410.  
  411.     ;this routine handles 1 routine, BLIT !
  412.     
  413. rotplyr
  414.     movem.l    d0-d7/a1-a6,-(sp)
  415.  
  416.     move.l    #rot,(a2)        ;routinestart address
  417.  
  418. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  419.     clr.l    curpic2            ;background picture
  420.     move.w    #1,anispd1        ;animationspeed
  421.     clr.w    anitel1            ;animation position
  422.  
  423.     lea    var,a0            ;communication-table
  424.  
  425.     move.l    #routinemode,d0        ;routinemode !!!
  426.  
  427.     sub.l    a0,a0            ;picture info legen
  428.  
  429.     tst.l    (a2)            ;is er een routine ?
  430.     beq    rotplyr.end        ;interlace handling
  431.  
  432.     move.l    intdel,d2        ;delay
  433.     move.l    inttel,d1        ;teller
  434.     cmp.w    d2,d1
  435.     blt    rotplyr.end
  436.     clr.l    inttel
  437.                 
  438.     bsr    varset            ;variabelen updaten
  439.  
  440.     move.l    (a2),a1            ;routine halen
  441.     move.l    #var,a0            ;variablen tabel
  442.  
  443.     movem.l    d3-d7/a1-a6,-(sp)
  444.     moveq.l    #0,d1            ;vars wissen
  445.     moveq.l    #0,d2
  446.     moveq.l    #0,d3
  447.     moveq.l    #0,d4
  448.     moveq.l    #0,d5
  449.     moveq.l    #0,d6
  450.     moveq.l    #0,d7
  451.     sub.l    a2,a2
  452.     sub.l    a3,a3
  453.     sub.l    a4,a4
  454.     sub.l    a5,a5
  455.  
  456.     jsr    4(a1)            ;routine afwerken
  457.     movem.l    (sp)+,d3-d7/a1-a6
  458.  
  459.     ;Routine:
  460.     ;
  461.     ;Input:
  462.     ;a0=variabelentabel
  463.     ;d0=routinemode
  464.     ;
  465.     ;Output:
  466.     ;a0=picture
  467.     ;d1=copperlist
  468.     ;d2=interruptdelay        (NOT used till now)
  469.     
  470.     move.w    #$0020,$dff09a        ;vb off !
  471.  
  472.     move.l    d2,intdel        ;delay
  473.  
  474.     lea    cprjmp,a3
  475.     move.l    #cprbck-8,d0
  476.  
  477.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  478.     bne.s    rotplyr.nocop
  479.     tst.l    d1            ;copperlist ?
  480.     beq.s    rotplyr.nocop
  481.     move.l    d1,d0
  482. rotplyr.nocop
  483.     move.w    d0,6(a3)
  484.     swap    d0
  485.     move.w    d0,2(a3)
  486.  
  487.     cmp.l    #0,a0            ;picture ?
  488.     beq.s    rotplyr.endvb
  489.  
  490.     move.l    a0,curpic1        ;current picture (cycle)
  491.     move.l    a0,curpal1        ;current palette
  492.  
  493.     tst.b    rotdpl            ;plane is geleverd
  494.     beq.s    rotplyr.set
  495.     clr.b    rotdpl
  496.     clr.l    cycdel1            ;cycle info wissen
  497.     clr.l    4+cycdel1
  498.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  499. rotplyr.set
  500.     clr.b    dplctr
  501.     bsr.s    grap
  502.     bsr    grac            ;colorset
  503. rotplyr.endvb
  504.     move.w    #$8020,$dff09a
  505. rotplyr.end
  506.     movem.l    (sp)+,d0-d7/a1-a6
  507.     rts
  508.  
  509.     ;removes possible routine-coppers
  510.     
  511. gracpr
  512.     movem.l    d0-d7/a0-a6,-(sp)
  513.     lea    cprjmp,a3
  514.     move.l    #cprbck-8,d0        ;copperlist resetten
  515.     move.w    d0,6(a3)
  516.     swap    d0
  517.     move.w    d0,2(a3)
  518.     movem.l    (sp)+,d0-d7/a0-a6
  519.     rts
  520.  
  521.     ;picture-to-copper routine, communicates with the
  522.     ;anim-player
  523.     
  524. grap                    ;d7=anim
  525.     movem.l    d0-d7/a0-a6,-(sp)
  526.  
  527.     clr.l    d7
  528.     
  529.     tst.l    curpic1            ;current picture ?
  530.     beq    grap.end
  531.  
  532.     move.l    curpic1,a2        ;normal pic halen
  533.  
  534.     lea    gracprscr,a1        ;window neerzetten
  535.     move.l    hogscr,d1
  536.  
  537.     move.w    pic_hgt(a2),d3        ;pic hoogte
  538.     move.w    pic_vew(a2),d5
  539.     btst    #2,d5            ;interlace ?
  540.     beq.s    grap.nohi4
  541.     lsr.w    #1,d3            ;/2
  542. grap.nohi4
  543.     cmp.w    d3,d1
  544.     bge.s    grap.hog
  545.     move.w    d1,d3
  546. grap.hog
  547.     sub.w    d3,d1
  548.     lsr.w    #1,d1
  549.     add.w    #win_str,d1
  550.     move.w    d1,d2
  551.     add.w    d3,d2
  552.  
  553.  
  554.     move.b    d1,2(a1)        ;y start
  555.     move.b    d2,6(a1)        ;y end
  556.  
  557.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  558.     lsl.l    #3,d4            ;make pixels
  559.  
  560.     move.l    #vew_wid*8,d0
  561.     move.l    #0,d1
  562.     move.l    #$71,d6
  563.  
  564.     move.w    pic_vew(a2),d5
  565.     btst    #15,d5            ;hires ?
  566.     beq.s    grap.nohi2
  567.  
  568.     move.l    #(vew_wid-4)*8*2,d0
  569.     move.l    #1,d1
  570.     move.l    #$81,d6
  571.  
  572.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  573.     ble.s    grap.nohi2
  574.     move.l    #(vew_wid)*8*2,d0
  575.     move.l    #$61,d6
  576.  
  577. grap.nohi2    
  578.     btst    #6,d5            ;super hires ?
  579.     beq.s    grap.noshi2
  580.  
  581.     move.l    #(vew_wid-4)*8*4,d0
  582.     move.l    #2,d1
  583.     move.l    #$81,d6
  584.  
  585.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  586.     ble.s    grap.noshi2
  587.     move.l    #(vew_wid)*8*4,d0
  588.     move.l    #$61,d6
  589.  
  590. grap.noshi2    
  591.  
  592.     clr.w    d5
  593.     cmp.w    d0,d4            ;breeder dan scherm ?
  594.     ble.s    grap.c
  595.     move.w    d4,d5
  596.     move.w    d0,d4
  597.     sub.w    d0,d5            ;modulo
  598.     lsr.w    #3,d5            ;/8
  599. grap.c
  600.     lsr.w    d1,d0
  601.     lsr.w    d1,d4
  602.  
  603.     move.w    d0,d2
  604.     sub.w    d4,d2
  605.     lsr.w    #1,d2            ;/2
  606.  
  607.     add.w    d6,d2
  608.     move.b    d2,3(a1)        ;x start
  609.     move.w    d2,d3            ;d3 bewaren !
  610.  
  611.     add.w    d4,d2            ;d4 bewaren !
  612.     move.b    d2,7(a1)        ;x end
  613.     
  614.     move.w    pic_vew(a2),d6
  615.     btst    #15,d6            ;hires ?
  616.     beq.s    grap.nohi5    
  617.     add.l    d4,d4            ;*2
  618. grap.nohi5
  619.     btst    #6,d6            ;super hires ?
  620.     beq.s    grap.noshi5    
  621.     add.l    d4,d4            ;*4
  622. grap.noshi5
  623.  
  624.     move.l    d7,-(sp)
  625.     move.w    pic_vew(a2),d6
  626.     move.l    #17,d0
  627.     move.l    #1,d1
  628.     move.l    #3,d7
  629.  
  630.     btst    #15,d6            ;hires ?
  631.     beq.s    grap.nohi3    
  632.     move.l    #9,d0
  633.     move.l    #2,d1
  634.     move.l    #2,d7
  635. grap.nohi3
  636.     btst    #6,d6            ;super hires ?
  637.     beq.s    grap.noshi3    
  638.     move.l    #9,d0
  639.     move.l    #2,d1
  640.     move.l    #1,d7
  641. grap.noshi3
  642.     sub.w    d0,d3
  643.     lsr.w    #1,d3
  644.     move.w    d3,10(a1)        ;ddfstrt
  645.     
  646.     move.w    d4,d2            ;pic breedte in pixels
  647.     lsr.w    #4,d2            ;/16
  648.     sub.w    d1,d2            ;-1
  649.  
  650.     lsl.w    d7,d2            ;*8
  651.     add.w    d2,d3
  652.     move.w    d3,14(a1)        ;ddfstop
  653.     move.l    (sp)+,d7
  654.     
  655.     lea    pic_raw(a2),a0
  656.  
  657.     moveq.l    #0,d2
  658.     move.w    pic_dpt(a2),d2
  659.     sub.l    #1,d2
  660.     muls    pic_wid(a2),d2
  661.     add.w    d2,d5
  662.  
  663.     move.w    pic_vew(a2),d2        ;viewmode add
  664.     btst    #2,d2
  665.     beq.s    grap.nolace4
  666.  
  667.     moveq.l    #0,d2
  668.     move.w    pic_dpt(a2),d2
  669.     muls    pic_wid(a2),d2
  670.     add.w    d2,d5            ;interlace gedoe
  671. grap.nolace4
  672.  
  673.     lea    gracprbpl,a4        ;iffpln neerzetten
  674.     lea    gracprpln,a0        ;iffpln neerzetten
  675.     moveq.l    #0,d2
  676.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  677.     move.l    #8,d6            ;copper step !
  678.  
  679.     tst.l    curpic2            ;2de picture ?
  680.     bne.s    grap.pic2
  681. grap.nopic2
  682.     move.w    d5,34(a1)        ;modulo oneven zetten
  683.     bra    grap.nodpl
  684. grap.pic2
  685.     move.l    curpic2,a3        ;oneven plane
  686.     move.l    currot2,a5        ;oneven plane
  687.     clr.l    curpic2            ;mischien niet goed
  688.     clr.l    curpal2            ;mischien niet goed
  689.     clr.l    currot2            ;mischien niet goed
  690.  
  691.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  692.     beq    grap.nopic2
  693.     
  694.     cmp.l    #0,currot1        ;routine ?    
  695.     beq.s    grap.norot
  696.     cmp.l    currot1,a5        ;routine hetzelfde ?
  697.     beq    grap.nopic2
  698. grap.norot
  699.  
  700.     cmp.b    #3,d2            ;> 8 kleuren ?
  701.     bgt    grap.nopic2
  702.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  703.     cmp.b    d2,d3            ;gelijke plnummers ?
  704.     bne    grap.nopic2
  705.     move.w    pic_vew(a2),d1
  706.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  707.     bne    grap.nopic2
  708.  
  709.     move.w    pic_vew(a2),d1        ;groter dan view test
  710.     btst    #6,d1            ;super hires ?
  711.     beq.s    grap.nohi2a
  712.     move.l    #vew_wid*4,d1
  713.     bra.s    grap.nohi2b
  714. grap.nohi2a
  715.     btst    #15,d1            ;hires ?
  716.     beq.s    grap.noshi2a
  717.     move.l    #vew_wid*2,d1
  718.     bra.s    grap.nohi2b
  719. grap.noshi2a
  720.     move.l    #vew_wid,d1
  721. grap.nohi2b
  722.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  723.     bgt.s    grap.small
  724.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  725.     bgt.s    grap.small
  726.  
  727.     move.w    pic_vew(a2),d1
  728.     btst    #2,d1
  729.     beq.s    grap.nolace8a
  730.     move.l    hogscr,d1
  731.     add.l    d1,d1
  732.     bra.s    grap.nolace8b
  733. grap.nolace8a
  734.     move.l    hogscr,d1
  735. grap.nolace8b
  736.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  737.     bgt.s    grap.small
  738.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  739.     bgt.s    grap.small
  740.     bra.s    grap.big
  741.  
  742. grap.small
  743.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  744.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  745.     bne    grap.nopic2
  746.     move.w    pic_wid(a2),d1
  747.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  748.     bne    grap.nopic2
  749.  
  750. grap.big
  751.     move.l    a3,curpic2
  752.     move.l    a3,curpal2
  753.     move.l    a5,currot2
  754.  
  755.     tst.b    dplctr            ;double playfield al gezet ?
  756.     beq.s    grap.nocop
  757.  
  758.     move.w    30(a1),34(a1)        ;modulo copieren
  759.  
  760.     move.w    2(a4),d1        ;bplcon0
  761.     btst    #10,d1            ;al double playfield ?
  762.     beq.s    grap.ta
  763.  
  764.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  765.     move.w    6(a0),14(a0)
  766.  
  767.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  768.     move.w    22(a0),30(a0)
  769.  
  770.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  771.     move.w    38(a0),46(a0)
  772.  
  773.     bra.s    grap.tb
  774. grap.ta
  775.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  776.     move.w    22(a0),46(a0)
  777.  
  778.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  779.     move.w    14(a0),30(a0)
  780.  
  781.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  782.     move.w    6(a0),14(a0)
  783.  
  784. grap.tb
  785.     move.l    #palette,a3        ;palette copieren
  786.  
  787.     move.w    #8-1,d1
  788. grap.pal
  789.     move.w    (a3)+,14(a3)
  790.     dbra    d1,grap.pal
  791.  
  792. grap.nocop
  793.     add.w    d3,d2
  794.     lsl.w    #8,d2
  795.     lsl.w    #4,d2
  796.     or.w    #$400,d2
  797.     move.w    d2,2(a4)        ;bplcon0
  798.  
  799.     movem.l    d0-d7/a0-a6,-(sp)
  800.  
  801.     move.l    curpic,a2        ;animpic ?
  802.     move.l    curfrm,d7
  803.     cmp.l    #0,a2
  804.     bne.s    grap.noanipic
  805.  
  806.     move.l    curpic2,a2        ;normal pic ?
  807.     move.l    curfrm2,d7
  808.     cmp.l    #0,a2
  809.     beq.s    grap.nodplpic
  810.  
  811. grap.noanipic
  812.     add.l    d6,a0
  813.     add.w    d6,d6
  814.     bsr.s    grappln            ;a2,d6,d7,d0
  815. grap.nodplpic
  816.     movem.l    (sp)+,d0-d7/a0-a6
  817.     add.w    d6,d6
  818.     bra.s    grap.nodpla
  819.  
  820.  
  821. grap.nodpl                ;geen double playfield
  822.     lsl.w    #8,d2
  823.     lsl.w    #4,d2
  824.     move.w    d2,2(a4)        ;bplcon0
  825.  
  826. grap.nodpla
  827.     move.w    d5,30(a1)        ;modulo even
  828.  
  829.     moveq.l    #0,d3
  830.     add.w    pic_vew(a2),d3        ;viewmode add
  831.     moveq.l    #0,d2
  832.     move.w    2(a4),d2
  833.     or.l    d3,d2
  834.     or.l    #$300,d2        ;genlock info
  835.     move.w    d2,2(a4)
  836.     
  837.     bsr.s    grappln            ;a2,d6,d7,d0
  838.  
  839. grap.end
  840.     
  841.     movem.l    (sp)+,d0-d7/a0-a6
  842.     rts
  843.         
  844.  
  845.     ;sets on of the 2 possible pictures to the copper
  846.     ;handles interlace
  847.  
  848.     ;d7=framenummer
  849.     ;d6=copperliststap
  850.     ;d0=raw planes positie
  851.     ;a2=current picture
  852. grappln                    ;planes invullen 
  853.     movem.l    d0-d7/a0-a6,-(sp)
  854.  
  855.     lea    pic_raw(a2),a1
  856.     move.l    a1,d0            ;raw planes
  857.     
  858.     moveq.l    #0,d2            ;x*y
  859.     move.w    pic_wid(a2),d2
  860.     lsr.l    #1,d2            ;/2
  861.     moveq.l    #0,d3
  862.     move.w    pic_hgt(a2),d3
  863.     muls    d3,d2
  864.     
  865.     move.l    d2,d4
  866.     add.l    d2,d2
  867.  
  868.     move.w    pic_dpt(a2),d3
  869.     muls    d3,d4            ;hele picture size
  870.     muls    d7,d4            ;frame*size d7 !
  871.  
  872.     add.l    d4,d4
  873.  
  874.     add.l    d4,d0
  875.  
  876.     move.l    #vew_wid,d5        ;max x view
  877.     move.l    hogscr,d4        ;max y view
  878.     move.w    pic_vew(a2),d1        ;viewmode add
  879.     btst    #2,d1
  880.     beq.s    grappln.nolace
  881.     add.l    d4,d4            ;max y view
  882. grappln.nolace
  883.     btst    #15,d1            ;hires ?
  884.     beq.s    grappln.nohi
  885.     move.l    #vew_wid*2,d5        ;max x view
  886. grappln.nohi
  887.     btst    #6,d1            ;super hires ?
  888.     beq.s    grappln.noshi
  889.     move.l    #vew_wid*4,d5        ;max x view
  890. grappln.noshi
  891.  
  892.     moveq.l    #0,d3            ;scherm centreren
  893.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  894.     cmp.w    d5,d3            ;breder dan scherm ?
  895.     ble.s    grappln.qa
  896.     sub.w    d5,d3            ;-scherm breedte
  897.     lsr.w    #2,d3            ;/4
  898.  
  899.     add.l    d3,d3
  900.  
  901.     add.l    d3,d0
  902. grappln.qa
  903.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  904.     cmp.w    d4,d3            ;hoger dan scherm ?
  905.     ble.s    grappln.qb
  906.     sub.w    d4,d3            ;-scherm breedte
  907.     lsr.w    #1,d3            ;/2
  908.     moveq.l    #0,d5
  909.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  910.     muls    pic_dpt(a2),d5
  911.     muls    d5,d3
  912.     add.l    d3,d0
  913. grappln.qb
  914.     moveq.l    #0,d2
  915.     move.w    pic_wid(a2),d2
  916.  
  917.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  918.     btst    #2,d5
  919.     beq.s    grappln.nolac7b
  920.  
  921.     move.w    $04(a6),d5        ;even/oneven ?
  922.     btst    #15,d5
  923.     beq.s    grappln.nolac7b
  924.     
  925.     moveq.l    #0,d3
  926.     move.w    pic_wid(a2),d3
  927.     muls    pic_dpt(a2),d3
  928.     add.l    d3,d0
  929. grappln.nolac7b
  930.  
  931.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  932.     tst.w    d1            ;0 planes ?
  933.     beq.s    grappln.end
  934.     sub.w    #1,d1
  935. grappln.a
  936.     move.w    d0,3*2(a0)
  937.     swap    d0
  938.     move.w    d0,1*2(a0)
  939.     swap    d0
  940.     add.l    d6,a0            ;d6=copper step !
  941.     add.l    d2,d0
  942.     dbra    d1,grappln.a
  943. grappln.end
  944.     movem.l    (sp)+,d0-d7/a0-a6
  945.     rts
  946.  
  947.     ;sets palettes to copper
  948.     
  949. grac
  950.     movem.l    d0-d7/a0-a6,-(sp)
  951.  
  952.     lea    curpal1,a3        ;palette 1
  953.     move.l    #palette,a1
  954.     bsr.s    gracfrm
  955.  
  956.     lea    curpal2,a3        ;palette 2 (dpl)
  957.     move.l    #8*2+palette,a1
  958.     bsr.s    gracfrm
  959.     
  960.     bsr.s    palctr            ;palette-buffer to copper
  961. grac.end
  962.     movem.l    (sp)+,d0-d7/a0-a6
  963.     rts
  964.         
  965.     ;moves palette from picture to palette-buffer
  966.  
  967. gracfrm
  968.     movem.l    d0-d7/a0-a6,-(sp)
  969.     tst.l    (a3)            ;palette aanwezig ?
  970.     beq.s    gracfrm.end
  971.  
  972.     move.l    (a3),a2            ;current palette
  973.     
  974.     cmp.l    #'PALE',(a2)        ;palette ?
  975.     bne.s    gracfrm.pict
  976.     lea    6(a2),a0        ;palette
  977.     move.w    4(a2),d0        ;aantal kleuren
  978.     bra.s    gracfrm.col
  979. gracfrm.pict
  980.     cmp.l    #'ANIM',(a2)        ;animatie ?
  981.     bne.s    gracfrm.noanim
  982.  
  983.     moveq.l    #0,d1
  984.     move.w    pic_ani(a2),d1
  985.     bclr    #7,d1            ;behandelbit weghalen
  986.  
  987.     moveq.l    #0,d3
  988.     move.w    pic_wid(a2),d3
  989.     lsr.w    #1,d3            ;/2
  990.     muls    pic_hgt(a2),d3
  991.     muls    pic_dpt(a2),d3
  992.  
  993.     add.l    d3,d3
  994.  
  995.     add.l    #pic_raw,d3
  996.     move.l    d3,d5
  997.  
  998.     btst    #0,d1
  999.     bne.s    gracfrm.buf2
  1000.     moveq.l    #0,d5
  1001. gracfrm.buf2
  1002.     add.l    d5,a2
  1003. gracfrm.noanim
  1004.     lea    pic_pal(a2),a0        ;palette
  1005.     move.w    pic_palnum(a2),d0
  1006.  
  1007.     cmp.w    #32-1,d0        ;niet meer dan 32 kleuren
  1008.     ble    gracfrm.sub
  1009.     move.w    #32-1,d0
  1010. gracfrm.sub
  1011.  
  1012.     tst.w    d0            ;0 planes ?
  1013.     beq.s    gracfrm.end
  1014. gracfrm.col
  1015. gracfrm.fa
  1016.     move.w    (a0)+,(a1)+
  1017.     dbra    d0,gracfrm.fa
  1018. gracfrm.end
  1019.     movem.l    (sp)+,d0-d7/a0-a6
  1020.     rts
  1021.     
  1022.     ;handles colorcycling in the palette-buffer
  1023.     ;and copies palette-buffer to copper
  1024.  
  1025. palctr
  1026.     movem.l    d0-d7/a0-a6,-(sp)
  1027.  
  1028.     move.l    curpic1,a2        ;current raw
  1029.     cmp.l    #0,a2
  1030.     beq.s    palctr.qb
  1031.     lea    cycdel1,a3        ;cycle delays
  1032.     move.l    #palette,a4
  1033.     bsr    palcyc
  1034. palctr.qb
  1035.     move.l    curpic2,a2        ;current raw
  1036.     cmp.l    #0,a2
  1037.     beq.s    palctr.c
  1038.     lea    cycdel2,a3        ;cycle delays
  1039.     move.l    #8*2+palette,a4
  1040.     bsr    palcyc
  1041.  
  1042. palctr.c
  1043.     lea    gracprcol,a1
  1044.     move.l    #palette,a0
  1045.  
  1046.     move.w    00(a0),00*4+2(a1)
  1047.     move.w    02(a0),01*4+2(a1)
  1048.     move.w    04(a0),02*4+2(a1)
  1049.     move.w    06(a0),03*4+2(a1)
  1050.     move.w    08(a0),04*4+2(a1)
  1051.     move.w    10(a0),05*4+2(a1)
  1052.     move.w    12(a0),06*4+2(a1)
  1053.     move.w    14(a0),07*4+2(a1)
  1054.     move.w    16(a0),08*4+2(a1)
  1055.     move.w    18(a0),09*4+2(a1)
  1056.  
  1057.     move.w    20(a0),10*4+2(a1)
  1058.     move.w    22(a0),11*4+2(a1)
  1059.     move.w    24(a0),12*4+2(a1)
  1060.     move.w    26(a0),13*4+2(a1)
  1061.     move.w    28(a0),14*4+2(a1)
  1062.     move.w    30(a0),15*4+2(a1)
  1063.     move.w    32(a0),16*4+2(a1)
  1064.     move.w    34(a0),17*4+2(a1)
  1065.     move.w    36(a0),18*4+2(a1)
  1066.     move.w    38(a0),19*4+2(a1)
  1067.  
  1068.     move.w    40(a0),20*4+2(a1)
  1069.     move.w    42(a0),21*4+2(a1)
  1070.     move.w    44(a0),22*4+2(a1)
  1071.     move.w    46(a0),23*4+2(a1)
  1072.     move.w    48(a0),24*4+2(a1)
  1073.     move.w    50(a0),25*4+2(a1)
  1074.     move.w    52(a0),26*4+2(a1)
  1075.     move.w    54(a0),27*4+2(a1)
  1076.     move.w    56(a0),28*4+2(a1)
  1077.     move.w    58(a0),29*4+2(a1)
  1078.  
  1079.     move.w    60(a0),30*4+2(a1)
  1080.     move.w    62(a0),31*4+2(a1)
  1081.  
  1082.     movem.l    (sp)+,d0-d7/a0-a6
  1083.     rts
  1084.  
  1085.     ;colorcyclinghandling of a palette
  1086.  
  1087. palcyc
  1088.     movem.l    d0-d7/a0-a6,-(sp)
  1089.     move.w    #4-1,d7            ;4 cycles
  1090. palcyc.d
  1091.     tst.w    (a3)+            ;delay klaar ?
  1092.     bne.s    palcyc.c
  1093.     
  1094.     moveq.l    #0,d1
  1095.     move.b    pic_cycstr(a2),d1    ;start color
  1096.     lsl.b    #1,d1        ;*2
  1097.  
  1098.     moveq.l    #0,d2
  1099.     move.b    pic_cycend(a2),d2    ;end color
  1100.     lsl.b    #1,d2        ;*2
  1101.  
  1102.     moveq.l    #0,d3
  1103.     move.b    pic_cycadd(a2),d3    ;richting
  1104.  
  1105.     move.l    a4,a0            ;palette pointer
  1106.     move.l    a0,a1
  1107.     add.l    d1,a0            ;startcolor
  1108.     add.l    d2,a1            ;endcolor
  1109.     
  1110.     cmp.b    #1,d3            ;omhoog
  1111.     beq.s    palcyc.up
  1112.     cmp.b    #3,d3            ;omlaag
  1113.     beq.s    palcyc.down
  1114.     bra.s    palcyc.i
  1115.  
  1116. palcyc.up                ;kleuren copieren
  1117.     move.w    (a1),d4            ;laatst color bewaren
  1118. palcyc.f                ;kleuren copieren
  1119.     cmp.l    a0,a1
  1120.     beq.s    palcyc.fa
  1121.     move.w    -(a1),2(a1)
  1122.     bra    palcyc.f
  1123. palcyc.fa
  1124.     move.w    d4,(a1)
  1125.     bra.s    palcyc.g    
  1126.     
  1127. palcyc.down
  1128.     move.w    (a0),d4            ;laatst color bewaren
  1129. palcyc.h                ;kleuren copieren
  1130.     cmp.l    a0,a1
  1131.     beq.s    palcyc.ha
  1132.     move.w    2(a0),(a0)+
  1133.     bra    palcyc.h
  1134. palcyc.ha
  1135.     move.w    d4,(a1)
  1136.  
  1137. palcyc.g
  1138.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1139.     bra.s    palcyc.i
  1140. palcyc.c
  1141.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1142. palcyc.i
  1143.     add.l    #4,a2            ;next cycle info
  1144.     dbra    d7,palcyc.d
  1145.  
  1146. palcyc.qb
  1147.     movem.l    (sp)+,d0-d7/a0-a6
  1148.     rts
  1149.  
  1150.  
  1151. ;    SECTION    variabelen,DATA_c
  1152.  
  1153.     cnop    0,2
  1154. curtsk        dc.l    0
  1155. tskpri        dc.l    0
  1156. duplok        dc.l    0
  1157. inttel        dc.l    0
  1158. intdel        dc.l    0
  1159.  
  1160. form        dc.l    0
  1161. ifffil        dc.l    0
  1162. intvbold    dc.l    0
  1163. inttbeold    dc.l    0
  1164. patpos        dc.l    0
  1165. gfxlib        dc.l    0
  1166. doslib        dc.l    0
  1167. wbview      dc.l    0
  1168. mt_data        dc.l    0
  1169. memvid        dc.l    0
  1170. oldcprlist    dc.l    0
  1171. hogscr        dc.l    vew_hgt
  1172.  
  1173. inspos        dc.l    -1
  1174. anispd1        dc.w    1    ;nooit op 0 !
  1175. anispd2        dc.w    1
  1176.  
  1177.         cnop    0,2
  1178. varclr.s            ;start wissen
  1179. oldrot        dc.l    0
  1180. curpic        dc.l    0
  1181. curfrm        dc.l    0
  1182. cycdel1        ds.w    4
  1183. cycdel2        ds.w    4
  1184.  
  1185. rotinf1        dc.w    0
  1186. rotinf2        dc.w    0
  1187.  
  1188. effspd        dc.w    0
  1189. efflop        dc.b    0
  1190. anilop1        dc.b    0
  1191. anilop2        dc.b    0
  1192. anipal1        dc.b    0
  1193. anipal2        dc.b    0
  1194. rotdpl        dc.b    1
  1195. dplctr        dc.b    0
  1196.         cnop    0,2
  1197.  
  1198. insdat        ds.l    4
  1199. inspri        dc.l    0
  1200. instel        dc.w    0
  1201.  
  1202. cureff        dc.l    0
  1203. efftel        dc.w    0
  1204.  
  1205. curpal1        dc.l    0
  1206. curpal2        dc.l    0
  1207. currot1        dc.l    0
  1208. currot2        dc.l    0
  1209. curpic1        dc.l    0
  1210. curpic2        dc.l    0
  1211. anitel1        dc.w    0
  1212. anitel2        dc.w    0
  1213. curfrm1        dc.l    0
  1214. curfrm2        dc.l    0
  1215. oldfrm1        dc.l    0
  1216. oldfrm2        dc.l    0
  1217.  
  1218. varclr.e
  1219.         dc.l    0            ;wisruimte
  1220.     
  1221. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1222.     
  1223. ;ownblit    dc.b    0
  1224. ntscmode    dc.b    0
  1225. end        dc.b    0
  1226.  
  1227. pronam    dc.b    'VideoTracker',0
  1228.     cnop    0,2
  1229. dosnam    dc.b    'dos.library',0
  1230.     cnop    0,4
  1231. gfxnam    dc.b    'graphics.library',0
  1232.     cnop    0,4
  1233.     
  1234.     cnop    0,4
  1235. gra.s
  1236. gracprscr
  1237.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1238. gracprbpl
  1239.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1240.     dc.w    $108,$0000,$10a,$0000
  1241. gracprpln
  1242.     dc.w    $e0,$0000,$e2,$0000
  1243.     dc.w    $e4,$0000,$e6,$0000
  1244.     dc.w    $e8,$0000,$ea,$0000
  1245.     dc.w    $ec,$0000,$ee,$0000
  1246.     dc.w    $f0,$0000,$f2,$0000
  1247.     dc.w    $f4,$0000,$f6,$0000
  1248. gracprcol
  1249.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1250.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1251.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1252.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1253. cprjmp
  1254.     dc.w    $080,0,$082,0
  1255. gra.e
  1256. gra.ql    equ    gra.e-gra.s        ;block lengte
  1257.  
  1258.  
  1259. cpr
  1260.     dc.w    $0001,$fffe
  1261.     dc.w    $09c,$8001        ;tbeint
  1262. cprspr
  1263.     dc.w    $120,$0000,$122,$0000
  1264.     dc.w    $124,$0000,$126,$0000
  1265.     dc.w    $128,$0000,$12a,$0000
  1266.     dc.w    $12c,$0000,$12e,$0000
  1267.     dc.w    $130,$0000,$132,$0000
  1268.     dc.w    $134,$0000,$136,$0000
  1269.     dc.w    $138,$0000,$13a,$0000
  1270.     dc.w    $13c,$0000,$13e,$0000
  1271.  
  1272. cprbuf
  1273.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1274.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1275.     dc.w    $108,$0000,$10a,$0000
  1276.     dc.w    $e0,$0000,$e2,$0000
  1277.     dc.w    $e4,$0000,$e6,$0000
  1278.     dc.w    $e8,$0000,$ea,$0000
  1279.     dc.w    $ec,$0000,$ee,$0000
  1280.     dc.w    $f0,$0000,$f2,$0000
  1281.     dc.w    $f4,$0000,$f6,$0000
  1282.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1283.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1284.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1285.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1286.     dc.w    $080,0,$082,0
  1287. cprbuf.e
  1288.  
  1289.     dc.w    $088,$0000        ;copjmp2
  1290.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1291. cprbck
  1292. sprdat
  1293.     dc.w    $ffff,$fffe
  1294.  
  1295.  
  1296. prf_pat    equ    7            ;pref sample size
  1297. prf_patnum    equ    128        ;aantal songpos's
  1298. prf_len    equ    ((prf_pat*prf_patnum)+1)
  1299.  
  1300. prf_pos    equ    0            ;eff position (teller)
  1301.  
  1302. prf_effs    equ    1        ;start effect (*prf_patnum)
  1303. prf_effe    equ    2        ;end effect   (*prf_patnum)
  1304. prf_pri    equ    3            ;priority     (*prf_patnum)
  1305. prf_spd    equ    4            ;eff speed    (*prf_patnum)
  1306. prf_ani    equ    5            ;ani speed    (*prf_patnum)
  1307. prf_roth    equ    6        ;routine info (*prf_patnum)
  1308. prf_rotl    equ    7        ;routine info (*prf_patnum)
  1309.  
  1310. eff_num    equ    256            ;aantal effects
  1311.  
  1312. pic_wid        equ    4        ;wide in bytes
  1313. pic_hgt        equ    6        ;hoogte
  1314. pic_dpt        equ    8        ;number planes
  1315. pic_ani        equ    10        ;aantal effes (anim)
  1316. pic_vew        equ    12        ;viewmode
  1317. pic_cycstr    equ    14        ;cycle start (*4)
  1318. pic_cycend    equ    15        ;cycle end (*4)
  1319. pic_cycspd    equ    16        ;cycle speed (*4)
  1320. pic_cycadd    equ    17        ;cycle add (*4)
  1321. pic_palnum    equ    30        ;aantal kleuren
  1322. pic_pal        equ    32        ;palette start
  1323. pic_palsiz    equ    256*2        ;vaste palette size
  1324. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1325.  
  1326. fil_namlen    equ    24        ;naamlengte
  1327. fil_len    equ    (fil_namlen+4+4)    ;effect info length
  1328. fil_num    equ    2+eff_num        ;aantal files
  1329. fil_fil    equ    0            ;file naam 
  1330. fil_dir    equ    24            ;pointer naar directory
  1331. fil_pnt    equ    28            ;pointer naar meminfo
  1332.  
  1333. palette    ds.w    64    ;palette
  1334.  
  1335. var_len        equ    $300        ;lengte vartabel
  1336.  
  1337. var__GfxBase    equ    $000        ;graphics lib
  1338. var_pic1    equ    $004        ;current picture
  1339. var_anispd1    equ    $008        ;animspeed
  1340. var_anitel1    equ    $00c        ;animspeed
  1341. var_cprbck    equ    $010        ;copperback
  1342. var_bck        equ    $014        ;background
  1343. var_pic2    equ    $018        ;current picture
  1344. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1345. var_lnd        equ    $020        ;landscape
  1346. var_txt1    equ    $040        ;text
  1347. var_txt16    equ    15*4+var_txt1
  1348. var_vec1    equ    $080        ;vectors
  1349. var_vec16    equ    15*4+var_vec1
  1350. var_fon1    equ    $0c0        ;fonts
  1351. var_fon16    equ    15*4+var_fon1
  1352. var_cols1    equ    $100        ;colorsets
  1353. var_cols16    equ    15*4+var_cols1
  1354. var_obj1    equ    $180        ;objects
  1355. var_obj16    equ    15*4+var_obj1
  1356.  
  1357.     cnop    0,2
  1358. var    ds.b    $300    ;variabelen voor routines
  1359.  
  1360.     
  1361. ;    SECTION    10,CODE_C
  1362.         endc
  1363.  
  1364. ; this is the routine-source
  1365. ;**********************************************************************
  1366.  
  1367.         ifnd    rout
  1368. pic_wid        equ    4        ;wide in bytes
  1369. pic_hgt        equ    6        ;hoogte
  1370. pic_dpt        equ    8        ;number planes
  1371. pic_ani        equ    10        ;aantal effes (anim)
  1372. pic_vew        equ    12        ;viewmode
  1373. pic_cycstr    equ    14        ;cycle start (*4)
  1374. pic_cycend    equ    15        ;cycle end (*4)
  1375. pic_cycspd    equ    16        ;cycle speed (*4)
  1376. pic_cycadd    equ    17        ;cycle add (*4)
  1377. pic_palnum    equ    30        ;aantal kleuren
  1378. pic_pal        equ    32        ;palette start
  1379. pic_palsiz    equ    256*2        ;vaste palette size
  1380. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1381.  
  1382. var_len        equ    $300        ;lengte vartabel
  1383.  
  1384. var__GfxBase    equ    $000        ;graphics lib
  1385. var_pic1    equ    $004        ;current picture
  1386. var_anispd1    equ    $008        ;animspeed
  1387. var_anitel1    equ    $00c        ;animcount
  1388. var_cprbck    equ    $010        ;copperback
  1389. var_bck        equ    $014        ;background
  1390. var_pic2    equ    $018        ;current picture
  1391. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1392. var_lnd        equ    $020        ;landscape
  1393. var_txt1    equ    $040        ;text
  1394. var_txt16    equ    15*4+var_txt1
  1395. var_vec1    equ    $080        ;vectors
  1396. var_vec16    equ    15*4+var_vec1
  1397. var_fon1    equ    $0c0        ;fonts
  1398. var_fon16    equ    15*4+var_fon1
  1399. var_cols1    equ    $100        ;colorsets
  1400. var_cols16    equ    15*4+var_cols1
  1401. var_obj1    equ    $180        ;objects
  1402. var_obj16    equ    15*4+var_obj1
  1403.  
  1404. vew_wid    equ    44
  1405. vew_hgt    equ    290
  1406. win_hgt    equ    117
  1407. win_str    equ    $20
  1408.         endc
  1409.  
  1410. ;bit4        ;off= full 8 bit copper, on=48*48 4 bit copper
  1411.  
  1412.         ifd    bit4
  1413. rotpic_y    equ    192
  1414. rotpic_yp    equ    48;/6
  1415. rotpic_x    equ    48
  1416.         endc
  1417.         ifnd    bit4
  1418. rotpic_y    equ    288
  1419. rotpic_yp    equ    36
  1420. rotpic_x    equ    48
  1421.         endc
  1422.  
  1423. ;    Input:
  1424. ;    a0=variabelen tabel
  1425. ;    d0=routinfo
  1426.  
  1427. ;    Output:
  1428. ;    a0=picture
  1429. ;    d1=copperlist
  1430.  
  1431.     SECTION    3,CODE_C
  1432.  
  1433. rot
  1434.     dc.l    'ROUT'
  1435.     movem.l    d2-d7/a1-a6,-(sp)
  1436.  
  1437.     lea    ($dff000).l,a6        ;hardware
  1438.     lea    rot,a5            ;prog base
  1439.  
  1440.     ifnd    bit4
  1441.     sub.l    a1,a1
  1442.     clr.l    d1
  1443.     tst.w    d0
  1444.     beq    rot.c
  1445.     lea    rotpicemp,a1
  1446. rot.c    
  1447.     move.l    a1,rotpicvew-rot(a5)
  1448.     endc
  1449.     
  1450. ;    move.l    #32768,d2
  1451. ;    bsr    getd7
  1452. ;
  1453. ;rot.ea    
  1454. ;    move.l    #4,d2            ;hoogte
  1455. ;    bsr    getd7
  1456. ;    muls    #1380,d7
  1457. ;    move.l    d7,variabele1-rot(a5)
  1458. ;    move.l    #1,d2            ;breedte
  1459. ;    bsr    getd7
  1460. ;    muls    #6,d7
  1461. ;    move.l    d7,variabele7-rot(a5)
  1462.  
  1463. rot.end
  1464.     bsr    rotint            ;eventueel init
  1465.  
  1466.     move.l    var_cprbck(a0),d1
  1467.     sub.l    #8,d1
  1468.  
  1469.     lea    rotcop1,a1        ;copperjump adres zetten
  1470.     move.l    rotbuf-rot(a5),d2    ;double buffer
  1471.     add.l    d2,a1
  1472.  
  1473.     move.w    d1,6(a1)
  1474.     swap    d1
  1475.     move.w    d1,2(a1)
  1476.  
  1477.     ifnd    bit4
  1478.     move.l    a1,a2
  1479.     add.l    #rotcprbck1ntsc,a2
  1480.     move.l    a1,a3
  1481.     add.l    #rotcprend1ntsc,a3
  1482.     move.l    a1,a4
  1483.     add.l    #rotcprbck1,a4
  1484.  
  1485.     cmp.b    #50,var_ntsc(a0)    ;ntsc/pal frequence
  1486.     bne    rot.ntsc
  1487.     move.l    #$8429fffe,(a2)        ;reset ntsc split (cprbck1ntsc)
  1488.     move.l    #$fc29fffe,(a3)        ;reset ntsc end (cprend1ntsc)
  1489.     add.l    #rotcprbck1,a1
  1490.     move.l    #$bc29fffe,d0        ;pal split (cprbck1)
  1491.     bra    rot.split
  1492. rot.ntsc
  1493.     move.l    #$bc29fffe,(a4)        ;reset pal split (cprbck1)
  1494.     move.l    #$00880000,(a3)        ;set ntsc end (cprend1ntsc)
  1495.     add.l    #rotcprbck1ntsc,a1
  1496.     move.l    #$8429fffe,d0        ;(cprbck1ntsc)
  1497. rot.split
  1498.     move.l    #$00880000,(a1)        ;set break
  1499.     move.l    var_cprbck(a0),a2
  1500.     cmp.b    #$ff,(a2)        ;menu uit ?
  1501.     bne    rot.a
  1502.     move.l    d0,(a1)
  1503. rot.a
  1504.     endc
  1505.  
  1506.     ifd    bit4
  1507.  
  1508.     move.l    a1,a2
  1509.     add.l    #rotcprbck1ntsc,a2
  1510. ;    move.l    a1,a3
  1511. ;    add.l    #rotcprend1ntsc,a3
  1512.     move.l    a1,a4
  1513.     add.l    #rotcprbck1,a4
  1514.  
  1515.     cmp.b    #50,var_ntsc(a0)    ;ntsc/pal frequence
  1516.     bne    rot.ntsc
  1517.     move.l    #$84c9fffe,(a2)        ;reset ntsc split (cprbck1ntsc)
  1518. ;    move.l    #$fcc9fffe,(a3)        ;reset ntsc end (cprend1ntsc)
  1519.     add.l    #rotcprbck1,a1
  1520.     move.l    #$bcc9fffe,d0        ;pal split (cprbck1)
  1521.     bra    rot.split
  1522. rot.ntsc
  1523.     move.l    #$a0c9fffe,(a4)        ;reset pal split (cprbck1)
  1524. ;    move.l    #$00880000,(a3)        ;set ntsc end (cprend1ntsc)
  1525.     add.l    #rotcprbck1ntsc,a1
  1526.     move.l    #$84c9fffe,d0        ;(cprbck1ntsc)
  1527. rot.split
  1528.     move.l    #$00880000,(a1)        ;set break
  1529.     move.l    var_cprbck(a0),a2
  1530.     cmp.b    #$ff,(a2)        ;menu uit ?
  1531.     bne    rot.a
  1532.     move.l    d0,(a1)
  1533. rot.a
  1534.     endc
  1535.     
  1536.     bsr    rotlop
  1537.  
  1538.     lea    rotcop1,a0
  1539.     move.l    rotbuf-rot(a5),d1
  1540.     add.l    a0,d1
  1541.     eor.l    #rotcop_l,rotbuf-rot(a5)
  1542.  
  1543.     ifnd    bit4
  1544.     move.l    rotpicvew-rot(a5),a0
  1545.     endc
  1546.     
  1547.     ifd    bit4
  1548.     lea    rotpic,a0        ;picture
  1549.     endc
  1550.     movem.l    (sp)+,d2-d7/a1-a6
  1551.     rts
  1552.  
  1553. getd7
  1554.     move.w    d0,d1
  1555.     divs    d2,d1
  1556.     and.l    #$ffff,d1
  1557.     move.l    d1,d7
  1558.     muls    d2,d1
  1559.     sub.w    d1,d0
  1560.     move.l    d0,d6
  1561.     add.l    #1,d7
  1562.     rts
  1563.  
  1564.     cnop    0,2
  1565.     dc.b    ' It''s 9-11-93 10:47, a nice day to start a new routine :) '
  1566.     cnop    0,2
  1567.     
  1568. rotint
  1569.     movem.l    d0-d7/a0-a6,-(sp)
  1570.  
  1571.     lea    rotcoptus.s,a2
  1572.  
  1573.     ifd    bit4
  1574.     move.l    rotcopstr-rot(a5),d0    ;pal start
  1575.     cmp.b    #50,var_ntsc(a0)    ;ntsc/pal frequence
  1576.     bne    rotint.ntsc
  1577.     move.l    #$4a,rotcopstr-rot(a5)    ;pal start
  1578.     bra    rotint.split
  1579. rotint.ntsc
  1580.     move.l    #$2e,rotcopstr-rot(a5)    ;ntsc start
  1581. rotint.split
  1582.     cmp.l    rotcopstr-rot(a5),d0    ;veranderd ?
  1583.     bne    rotint.changed
  1584.     endc
  1585.  
  1586.     tst.b    (a2)            ;already filled ?
  1587.     bne    rotint.nocop
  1588.  
  1589. rotint.changed
  1590.     move.l    rotcopstr-rot(a5),d1    ;copper y position
  1591.     
  1592.     move.w    #rotpic_y-1,d0        ;number of copperlines
  1593. rotint.a
  1594.     move.b    d1,(a2)
  1595.     add.w    #1,d1
  1596.     add.l    #rotcoptus_l,a2
  1597.     dbra    d0,rotint.a
  1598.     
  1599.     lea    rotcop1,a2        ;copy copper1 to copper2
  1600.     move.l    a2,a1
  1601.     add.l    #rotcop_l,a1
  1602.     move.w    #rotcop_l/4-1,d0
  1603. rotint.bb
  1604.     move.l    (a2)+,(a1)+
  1605.     dbra    d0,rotint.bb
  1606.  
  1607. rotint.nocop
  1608.     movem.l    (sp)+,d0-d7/a0-a6
  1609.     rts
  1610.  
  1611. rotlop
  1612.     movem.l    d0-d7/a0-a6,-(sp)
  1613.  
  1614.     move.l    var_pic1(a0),a1        ;picture
  1615.     cmp.l    #0,a1            ;empty ?
  1616.     beq    rotlop.nopic
  1617.  
  1618.     cmp.l    rotbck-rot(a5),a1    ;already on screen ?
  1619.     beq    rotlop.nopic
  1620.  
  1621.     clr.l    d0
  1622.     move.w    pic_wid(a1),d0        ;get width
  1623.     lsl.l    #3,d0            ;*8 for pixelnumber
  1624.  
  1625.     move.w    pic_vew(a1),d1
  1626.     btst    #11,d1            ;hold and modify ?
  1627.     beq    rotlop.noham
  1628.     sub.w    #16,d0
  1629. rotlop.noham
  1630.  
  1631.     cmp.w    #rotpic_x,d0        ;good width ?
  1632.     bne    rotlop.nopic
  1633.  
  1634.     clr.l    d1
  1635.     move.w    pic_hgt(a1),d1        ;heigth
  1636.     cmp.w    #rotpic_yp,d1        ;good height ?
  1637.     bne    rotlop.nopic
  1638.  
  1639.     move.l    a1,rotbck-rot(a5)
  1640.     clr.w    rotanicnt-rot(a5)    ;animation restart
  1641.  
  1642. rotlop.nopic
  1643.     tst.l    rotbck-rot(a5)        ;picture available ?
  1644.     beq    rotlop.end
  1645.     move.l    rotbck-rot(a5),a1    ;picture
  1646.  
  1647.     tst.l    var_cols1(a0)        ;colorset ?
  1648.     beq    rotlop.noset
  1649.     move.l    var_cols1(a0),rotcolset-rot(a5)
  1650. rotlop.noset
  1651.  
  1652.     lea    6+rotcoptus.s,a0    ;start copperlist
  1653.     add.l    rotbuf-rot(a5),a0
  1654.     lea    pic_raw(a1),a2        ;start raw planes
  1655.     clr.l    d1
  1656.     move.w    pic_wid(a1),d1
  1657.     muls    pic_hgt(a1),d1
  1658.     muls    pic_dpt(a1),d1
  1659.     move.w    rotanicnt-rot(a5),d0
  1660.     muls    d0,d1
  1661.     add.l    d1,a2
  1662.     add.w    #1,d0
  1663.     cmp.w    pic_ani(a1),d0
  1664.     bne    rotlop.norestart
  1665.     clr.w    d0
  1666. rotlop.norestart
  1667.     move.w    d0,rotanicnt-rot(a5)
  1668.  
  1669.     move.w    pic_vew(a1),d2
  1670.     btst    #11,d2            ;hold and modify ?
  1671.     bne    rotlopham
  1672.  
  1673.     move.w    pic_dpt(a1),d2
  1674.     cmp.b    #4,d2            ;16 colors ?
  1675.     beq    rotlop16
  1676.  
  1677.     bra    rotlop.end        ;noy yet available
  1678.  
  1679.  
  1680. rotlopham                ;hold and modify picture
  1681.     move.l    #(rotpic_x+16)/8,d0
  1682.     clr.l    d3            ;colorvalue
  1683.     move.w    #(rotpic_yp)-1,d1    ;y
  1684. rotlopham.f
  1685.     move.w    #(rotpic_x)/8,d6    ;x
  1686. rotlopham.d
  1687.     move.l    #8-1,d7            ;read bits of 1 byte
  1688. rotlopham.c
  1689.     clr.l    d4            ;colorbits
  1690.     clr.l    d5            ;colorinfo
  1691.  
  1692.     btst    d7,(a2)            ;get colorbits
  1693.     beq    rotlopham.c0    
  1694.     bset    #0,d4
  1695. rotlopham.c0    
  1696.     add.l    d0,a2
  1697.     btst    d7,(a2)
  1698.     beq    rotlopham.c1    
  1699.     bset    #1,d4
  1700. rotlopham.c1    
  1701.     add.l    d0,a2
  1702.     btst    d7,(a2)
  1703.     beq    rotlopham.c2
  1704.     bset    #2,d4
  1705. rotlopham.c2
  1706.     add.l    d0,a2
  1707.     btst    d7,(a2)
  1708.     beq    rotlopham.c3
  1709.     bset    #3,d4
  1710. rotlopham.c3
  1711.  
  1712.     add.l    d0,a2            ;get colorinfo
  1713.     btst    d7,(a2)
  1714.     beq    rotlopham.c4
  1715.     bset    #0,d5
  1716. rotlopham.c4
  1717.     add.l    d0,a2
  1718.     btst    d7,(a2)
  1719.     beq    rotlopham.c5
  1720.     bset    #1,d5
  1721. rotlopham.c5
  1722.  
  1723.     rept    5
  1724.     sub.l    d0,a2
  1725.     endr
  1726.  
  1727.     tst.b    d5            ;true color ?
  1728.     bne    rotlopham.c00
  1729.  
  1730.     lea    pic_pal(a1),a3        ;palette
  1731.     lsl.l    #1,d4
  1732.     move.w    (a3,d4),d3
  1733.     bra    rotlopham.e
  1734. rotlopham.c00
  1735.     cmp.b    #1,d5            ;blue bits ?
  1736.     bne    rotlopham.c01
  1737.     and.w    #$ff0,d3        ;remove old bits
  1738.     or.w    d4,d3            ;set new bits
  1739.     bra    rotlopham.e
  1740. rotlopham.c01
  1741.     cmp.b    #2,d5            ;red bits ?
  1742.     bne    rotlopham.c02
  1743.     and.w    #$0ff,d3        ;remove old bits
  1744.     lsl.w    #8,d4
  1745.     or.w    d4,d3            ;set new bits
  1746.     bra    rotlopham.e
  1747. rotlopham.c02
  1748.     cmp.b    #3,d5            ;green bits ?
  1749.     bne    rotlopham.c03
  1750.     and.w    #$f0f,d3        ;remove old bits
  1751.     lsl.w    #4,d4
  1752.     or.w    d4,d3            ;set new bits
  1753.     bra    rotlopham.e
  1754. rotlopham.c03
  1755.  
  1756. rotlopham.e
  1757.     cmp.w    #(rotpic_x)/8,d6    ;first byte ?
  1758.     bne    rotlopham.noskip
  1759.     cmp.w    #5,d7
  1760.     bge    rotlopham.skip
  1761. rotlopham.noskip
  1762.     tst.b    d6            ;last byte ?
  1763.     bne    rotlopham.noskip2
  1764.     cmp.w    #5,d7
  1765.     blt    rotlopham.endx
  1766. rotlopham.noskip2
  1767.  
  1768.     move.w    d3,(a0)            ;write pixel to copper
  1769.     move.w    d3,rotcoptus_l(a0)
  1770.     move.w    d3,2*rotcoptus_l(a0)
  1771.     move.w    d3,3*rotcoptus_l(a0)
  1772.     move.w    d3,4*rotcoptus_l(a0)
  1773.     move.w    d3,5*rotcoptus_l(a0)
  1774.     move.w    d3,6*rotcoptus_l(a0)
  1775.     move.w    d3,7*rotcoptus_l(a0)
  1776.     add.l    #4,a0
  1777.  
  1778. rotlopham.skip
  1779.     dbra    d7,rotlopham.c        ;next bit
  1780.  
  1781.     add.l    #1,a2
  1782.     dbra    d6,rotlopham.d        ;next byte
  1783.  
  1784. rotlopham.endx
  1785.     add.l    #(((rotpic_x+16)/8)*6)-(rotpic_x/8),a2
  1786.     add.l    #(7*rotcoptus_l)+4,a0
  1787.  
  1788.     dbra    d1,rotlopham.f        ;next row
  1789.     bra    rotlop.end
  1790.     
  1791. rotlop16                ;16 color picture
  1792.     lea    pic_pal(a1),a3        ;palette
  1793.  
  1794.     tst.l    rotcolset-rot(a5)
  1795.     beq    rotlop16.noset
  1796.     move.l    rotcolset-rot(a5),a3
  1797.     lea    6(a3),a3
  1798. rotlop16.noset
  1799.  
  1800.     move.w    #rotpic_yp-1,d1        ;y
  1801. rotlop16.f
  1802.     move.w    #(rotpic_x)/8-1,d6    ;x
  1803. rotlop16.d
  1804.     move.l    #8-1,d7            ;read bits of 1 byte
  1805. rotlop16.c
  1806.     clr.w    d4            ;colorbits
  1807.     btst    d7,(a2)            ;get colorbits
  1808.     beq    rotlop16.c0    
  1809.     bset    #0,d4
  1810. rotlop16.c0    
  1811.     btst    d7,(rotpic_x/8)(a2)
  1812.     beq    rotlop16.c1    
  1813.     bset    #1,d4
  1814. rotlop16.c1    
  1815.     btst    d7,2*(rotpic_x/8)(a2)
  1816.     beq    rotlop16.c2
  1817.     bset    #2,d4
  1818. rotlop16.c2
  1819.     btst    d7,3*(rotpic_x/8)(a2)
  1820.     beq    rotlop16.c3
  1821.     bset    #3,d4
  1822. rotlop16.c3
  1823.     lsl.w    #1,d4
  1824.     move.w    (a3,d4),d4
  1825.     move.w    d4,(a0)            ;write pixel to copper
  1826.     move.w    d4,rotcoptus_l(a0)
  1827.     move.w    d4,2*rotcoptus_l(a0)
  1828.     move.w    d4,3*rotcoptus_l(a0)
  1829.     move.w    d4,4*rotcoptus_l(a0)
  1830.     move.w    d4,5*rotcoptus_l(a0)
  1831.     move.w    d4,6*rotcoptus_l(a0)
  1832.     move.w    d4,7*rotcoptus_l(a0)
  1833.     add.l    #4,a0
  1834.     dbra    d7,rotlop16.c        ;next bit
  1835.  
  1836.     add.l    #1,a2
  1837.     dbra    d6,rotlop16.d        ;next byte
  1838.  
  1839.     add.l    #(7*rotcoptus_l)+4,a0
  1840.     add.l    #(rotpic_x/8)*3,a2
  1841.  
  1842.     dbra    d1,rotlop16.f        ;next row
  1843.     bra    rotlop.end
  1844.     
  1845. rotlop.end
  1846.     movem.l    (sp)+,d0-d7/a0-a6
  1847.     rts
  1848.  
  1849. rotbuf        dc.l    0
  1850. rotbck        dc.l    0
  1851. rotanicnt    dc.w    0
  1852. rotpicvew    dc.l    0
  1853. rotcolset    dc.l    0
  1854.  
  1855. ;rotmag        dc.l    0
  1856. ;rotmagpos    dc.l    0
  1857. ;rotmagway    dc.l    4
  1858. ;rotrot        dc.l    0
  1859. ;rotrotpos    dc.l    0
  1860. ;rotrotway    dc.l    18
  1861.  
  1862.         ifd    bit4
  1863. rotcopstr    dc.l    $4a
  1864.         endc
  1865.         ifnd    bit4
  1866. rotcopstr    dc.l    $18
  1867.         endc
  1868.         
  1869.  
  1870.     ifnd    bit4
  1871. ;pic_wid        equ    4        ;wide in bytes
  1872. ;pic_hgt        equ    6        ;hoogte
  1873. ;pic_dpt        equ    8        ;number planes
  1874. ;pic_ani        equ    10        ;aantal effes (anim)
  1875. ;pic_vew        equ    12        ;viewmode
  1876. ;pic_cycstr        equ    14        ;cycle start (*4)
  1877. ;pic_cycend        equ    15        ;cycle end (*4)
  1878. ;pic_cycspd        equ    16        ;cycle speed (*4)
  1879. ;pic_cycadd        equ    17        ;cycle add (*4)
  1880. ;pic_palnum        equ    30        ;aantal kleuren
  1881. ;pic_pal        equ    32        ;palette start
  1882. ;pic_palsiz        equ    256*2        ;vaste palette size
  1883. ;pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1884.  
  1885. rotpicemp
  1886.     dc.l    'PICT'
  1887.     dc.w    8,16,1,1,0
  1888.     ds.b    4*4
  1889.     dc.w    0
  1890.     ds.w    256
  1891.     ds.b    8*16*1
  1892.     endc
  1893.     
  1894.  
  1895.     ifd    bit4
  1896. rotpic
  1897.     incbin    'videotracker:bin/copmag.bin'
  1898.     cnop    0,2
  1899.     endc
  1900.  
  1901. rotcop1
  1902. rotcprjmp
  1903.     dc.w    $80,0,$82,0
  1904. rotcoptus.s
  1905.  
  1906.     ifd    bit4
  1907.     dc.w    $00c9,$fffe
  1908.     dc.w    $1be,$000,$1bc,$000,$1ba,$000,$1b8,$000
  1909.     dc.w    $1b6,$000,$1b4,$000,$1b2,$000,$1b0,$000
  1910.     dc.w    $1ae,$000,$1ac,$000,$1aa,$000,$1a8,$000
  1911.     dc.w    $1a6,$000,$1a4,$000,$1a2,$000,$1a0,$000
  1912.     dc.w    $19e,$000,$19c,$000,$19a,$000,$198,$000
  1913.     dc.w    $196,$000,$194,$000,$192,$000,$190,$000
  1914.     dc.w    $18e,$000,$18c,$000,$18a,$000,$188,$000
  1915.     dc.w    $186,$000,$184,$000,$182,$000
  1916.     dc.w    $1be,$000,$1bc,$000,$1ba,$000,$1b8,$000
  1917.     dc.w    $1b6,$000,$1b4,$000,$1b2,$000,$1b0,$000
  1918.     dc.w    $1ae,$000,$1ac,$000,$1aa,$000,$1a8,$000
  1919.     dc.w    $1a6,$000,$1a4,$000,$1a2,$000,$1a0,$000
  1920.     dc.w    $19e,$000
  1921.     endc
  1922.  
  1923.     ifnd    bit4
  1924.     dc.w    $0029,$fffe
  1925.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1926.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1927.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1928.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1929.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1930.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1931.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1932.     dc.w    $180,$000,$180,$000,$180,$000
  1933.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1934.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1935.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1936.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1937.     dc.w    $180,$000
  1938.     endc
  1939.  
  1940. rotcoptus.e
  1941.  
  1942.     ifd    bit4
  1943.     rept    rotpic_y-1
  1944.     dc.w    $00c9,$fffe
  1945.     dc.w    $1be,$000,$1bc,$000,$1ba,$000,$1b8,$000
  1946.     dc.w    $1b6,$000,$1b4,$000,$1b2,$000,$1b0,$000
  1947.     dc.w    $1ae,$000,$1ac,$000,$1aa,$000,$1a8,$000
  1948.     dc.w    $1a6,$000,$1a4,$000,$1a2,$000,$1a0,$000
  1949.     dc.w    $19e,$000,$19c,$000,$19a,$000,$198,$000
  1950.     dc.w    $196,$000,$194,$000,$192,$000,$190,$000
  1951.     dc.w    $18e,$000,$18c,$000,$18a,$000,$188,$000
  1952.     dc.w    $186,$000,$184,$000,$182,$000
  1953.     dc.w    $1be,$000,$1bc,$000,$1ba,$000,$1b8,$000
  1954.     dc.w    $1b6,$000,$1b4,$000,$1b2,$000,$1b0,$000
  1955.     dc.w    $1ae,$000,$1ac,$000,$1aa,$000,$1a8,$000
  1956.     dc.w    $1a6,$000,$1a4,$000,$1a2,$000,$1a0,$000
  1957.     dc.w    $19e,$000
  1958.     endr
  1959.     endc
  1960.  
  1961.     ifnd    bit4
  1962.     rept    rotpic_y-1
  1963.     dc.w    $0029,$fffe
  1964.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1965.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1966.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1967.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1968.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1969.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1970.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1971.     dc.w    $180,$000,$180,$000,$180,$000
  1972.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1973.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1974.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1975.     dc.w    $180,$000,$180,$000,$180,$000,$180,$000
  1976.     dc.w    $180,$000
  1977.     endr
  1978.     endc
  1979.  
  1980.         
  1981.     dc.w    $180,$000,$88,0
  1982.  
  1983. rotcoptus_l    equ    rotcoptus.e-rotcoptus.s
  1984.  
  1985.     ifnd    bit4
  1986. rotcprbck1        equ    (rotcoptus_l*164)+8
  1987. rotcprend1        equ    (rotcoptus_l*rotpic_y)+8
  1988. rotcprbck1ntsc        equ    (rotcoptus_l*108)+8
  1989. rotcprend1ntsc        equ    (rotcoptus_l*(rotpic_y-60))+8
  1990.     endc
  1991.  
  1992.     ifd    bit4
  1993. rotcprbck1        equ    (rotcoptus_l*114)+8
  1994. ;rotcprend1        equ    (rotcoptus_l*rotpic_y)+8
  1995. rotcprbck1ntsc        equ    (rotcoptus_l*86)+8
  1996. ;rotcprend1ntsc        equ    (rotcoptus_l*rotpic_y)+8
  1997.     endc
  1998.  
  1999.     cnop    0,2
  2000.  
  2001. rotcop2
  2002.     ds.b    rotcop2-rotcop1
  2003. rotcop2.e
  2004.  
  2005. rotcop_l    equ    rotcop2-rotcop1
  2006.  
  2007.  
  2008. ;rotcol        ds.w    256*256
  2009. ;rotcol.e
  2010. ;rotcol_l    equ    rotcol.e-rotcol
  2011.  
  2012.  
  2013. rot.e
  2014.  
  2015. ;**********************************************************************
  2016.  
  2017.     ifd    rout
  2018. rotset
  2019.     incbin    'videotracker:effect/yel.set'
  2020.     cnop    0,2
  2021. rotsrc
  2022.     incbin    'videotracker:effect/walk_l16.anbr'
  2023. ;    incbin    'videotracker:effect/eye_HAM.bru'
  2024.     cnop    0,2
  2025.     endc
  2026.